#ifndef CONE_H
#define CONE_H

#include "Geometry.h"

class WCone: public Geometry {
public:
    vec3 base, top;
    float baseR, topR;

    WCone() {
        name = "Cone";
    }

    Symbol parse(ifstream &file, Symbol curToken);
    bool intersect(Ray *r);
    vec3 getNormal(Ray *r);
    vec3 genRandomPoint(vec3 look, int cur, int lim);

    void print() {
        printf("Cone:\n\tBase: %f %f %f\n\t\tBase Radius: %f"
               "\n\tTop: %f %f %f\n\t\tTop Radius: %f\n",
               base.x, base.y, base.z, baseR,
               top.x, top.y, top.z, topR);

        Geometry::print();
    }

    AABB *generateAABB() {
        return NULL;
    }

    int type() {
        return 4;
    }
};

#endif
